package com.mytx.mapper;

import com.mytx.pojo.Contact;
import com.mytx.pojo.ContactExample;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ContactMapper {
    /**
     * 查询联系人，只要状态不是0 的全部查询出来，
     * 用于登录时候获取自己的联系人
     * @param uId
     * @return
     */
    List<Contact> queryContacts(String uId);

    /**
     * 只查询状态是2（双边好友关系）的联系人，用于更新资料后，获取联系人，推送消息给对方，
     * @param uId
     * @return
     */
    List<Contact> queryReallyContacts(String uId);


    //无限互联
    List<Contact> queryConnectInfiniteContacts(@Param("uId") String uId, @Param("connectKey") String connectKey);

    //亲戚互联
    List<Contact> queryRelationInfiniteContacts(@Param("uId") String uId, @Param("connectKey") String connectKey);


    int countByExample(ContactExample example);

    int deleteByExample(ContactExample example);

    int deleteByPrimaryKey(String cId);

    int insert(Contact record);

    int insertSelective(Contact record);

    List<Contact> selectByExample(ContactExample example);



    /**
     * 查询用户曾经为联系人关系
     * @param mId 主动添加好友的用户ID
     * @param tId  被添加好友的用户ID
     * @return
     */
    Contact selectContactByStatus(@Param("mId") String mId ,@Param("tId") String tId);

    /**
     * 逻辑删除
     * @param mId
     * @param tId
     * @return
     */
    int updateContactByMIDTID(@Param("mId") String mId,@Param("tId") String tId,@Param("status") String status);

    /**
     * 查询添加的用户是否为单边联系人
     * @param mId
     * @param tId
     * @return
     */
    Contact selectUnilateralByMIDTID(@Param("mId") String mId,@Param("tId") String tId);

    /**
     * 查询与被添加的好友是否已经是好友
     * @param mId
     * @param tId
     * @return
     */
    Contact selectGoodFriendByMIDTID(@Param("mId") String mId,@Param("tId") String tId);

    /**
     * 根据cid查询联系人信息
     * @param cId
     * @return
     */
    Contact selectContactByCid(@Param("cId")String cId);




    Contact selectByPrimaryKey(String cId);

    int updateByExampleSelective(@Param("record") Contact record, @Param("example") ContactExample example);

    int updateByExample(@Param("record") Contact record, @Param("example") ContactExample example);

    int updateByPrimaryKeySelective(Contact record);

    int updateByPrimaryKey(Contact record);
}